﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
using ScrumFactory.Composition.ViewModel;
using System.ComponentModel;

namespace ScrumFactory.Composition.ViewModel {

    /// <summary>
    /// Project Team View Model interface.
    /// </summary>
    public interface IProjectTeamViewModel {

        /// <summary>
        /// Gets the project.
        /// </summary>
        /// <value>The project.</value>
        Project Project { get; }

        /// <summary>
        /// Gets the project roles.
        /// </summary>
        /// <value>The roles.</value>
        ICollection<IRoleViewModel> Roles { get; }

        /// <summary>
        /// Gets the project memberships.
        /// </summary>
        /// <value>The project memberships.</value>
        ICollection<IProjectMembershipViewModel> ProjectMemberships { get; }

        /// <summary>
        /// Gets the grouped project memberships.
        /// </summary>
        /// <value>The grouped project memberships.</value>
        ICollectionView GroupedProjectMemberships { get; }

        /// <summary>
        /// Gets the show roles list command.
        /// </summary>
        /// <value>The show roles list command.</value>
        ICommand ShowRolesListCommand { get; }


        /// <summary>
        /// Gets the add new member command.
        /// </summary>
        /// <value>The add new member command.</value>
        ICommand AddNewMemberCommand { get; }

        /// <summary>
        /// Gets the remove member command.
        /// </summary>
        /// <value>The remove member command.</value>
        ICommand RemoveMemberCommand { get; }
        
    }
}
